
import java.util.Iterator;
import java.util.Vector;
import javax.swing.table.DefaultTableModel;


public class PacienteController {
    
    //<editor-fold defaultstate="collapsed" desc="Construtor">
    public PacienteController(){
        
    }
    //</editor-fold>
    
    //<editor-fold defaultstate="collapsed" desc="Métodos">
    /*
     * Método para busca de ids apenas pasando a linha
     * do registro selecionado da tabela.
     */
    public int buscarIDdeTabelas(int linha,int coluna){        
        PacienteDAO pacienteDAO = new PacienteDAO();
        return pacienteDAO.buscarID_Tabelas(linha,coluna);
    }
    /*
     * Método para buscar o próximo id a ser gravado no banco
     */
    public int buscarIDProx(String id_tabela){
        int id;
        PacienteDAO pacienteDAO = new PacienteDAO();
        id = pacienteDAO.buscar_ProximoID(id_tabela);
        return id;
    }
    /*
     * Método para buscar id de uma clinica passada por
     * parametro
     */
    public int buscarIDDentista(String nome_dentista){
        PacienteDAO pacienteDAO = new PacienteDAO();
        return pacienteDAO.buscarID_Dentista(nome_dentista);
    } 
    /*
     * Método que seta os atributos para cadastrar clinicas
     */
    public boolean cadastrarPaciente(int id_dentista,String nome,String rg,String cpf,String email,String telefone,String celular,String endereco
                    ,String numero,String apto,String uf,String cidade,String bairro){
        Paciente paciente = new Paciente();
        
        paciente.setID_Dentista(id_dentista);
        paciente.setNome(nome);
        paciente.setApto(apto);
        paciente.setBairro(bairro);
        paciente.setCelular(celular);
        paciente.setCidade(cidade);
        paciente.setRg(rg);
        paciente.setCpf(cpf);
        paciente.setEmail(email);
        paciente.setEndereco(endereco);
        paciente.setNumero(numero);
        paciente.setCpf(cpf);
        paciente.setTelefone(telefone);
        paciente.setUf(uf);
        
        PacienteDAO pacienteDAO = new PacienteDAO();
        return pacienteDAO.cadastrarPaciente(paciente);
    }
    /*
     * Método para buscar dentistas, e setar em uma jtable
     * a partir do tipo de pesquisa e valor a ser pesquisado.
     */
    public void buscarPacientes(String filtrar_por,String pesquisar){
        /*
         * Instancia dos objetos
         */
        PacienteDAO pacienteDAO = new PacienteDAO();
        
        //cria um vetor de dentistas.
        Vector<Paciente> vector = new Vector<Paciente>();
        
        vector = pacienteDAO.buscarPacientes(filtrar_por,pesquisar);
        
        DefaultTableModel model = ((DefaultTableModel)frm_pacientes.jt_pacientes.getModel()); 
        model.getDataVector().removeAllElements();
        
        int linha=0;
            for (Iterator<Paciente> iterator = vector.iterator(); iterator.hasNext();) {
                model.addRow(new String[] {});
                Paciente paciente = iterator.next();
                frm_pacientes.jt_pacientes.setValueAt(paciente.getID_Paciente(), linha, 0);
                frm_pacientes.jt_pacientes.setValueAt(paciente.getNome(), linha, 1);
                frm_pacientes.jt_pacientes.setValueAt(paciente.getNomeDentista(), linha, 2);
                frm_pacientes.jt_pacientes.setValueAt(paciente.getRg(), linha, 3);
                frm_pacientes.jt_pacientes.setValueAt(paciente.getCpf(), linha, 4);
                frm_pacientes.jt_pacientes.setValueAt(paciente.getEmail(), linha, 5);
                frm_pacientes.jt_pacientes.setValueAt(paciente.getTelefone(), linha, 6);
                frm_pacientes.jt_pacientes.setValueAt(paciente.getCelular(), linha, 7);
                frm_pacientes.jt_pacientes.setValueAt(paciente.getEndereco(), linha, 8);
                frm_pacientes.jt_pacientes.setValueAt(paciente.getNumero(), linha, 9);
                frm_pacientes.jt_pacientes.setValueAt(paciente.getApto(), linha, 10);
                frm_pacientes.jt_pacientes.setValueAt(paciente.getUf(), linha, 11);
                frm_pacientes.jt_pacientes.setValueAt(paciente.getCidade(), linha, 12);
                frm_pacientes.jt_pacientes.setValueAt(paciente.getBairro(), linha, 13);
                linha++;
            }   
    }
    /*
     * Método para listar os campos de uma clinica recebendo por parametro
     * o respectivo id da clinica selecionada na tabela de consulta.
     */
    public void editarPaciente(int id){
        Vector<Paciente> vector = new Vector<Paciente>();
        PacienteDAO pacienteDAO = new PacienteDAO();
        Paciente paciente = new Paciente();
        
        paciente.setID_Paciente(id);
        vector = pacienteDAO.editarPaciente(paciente);
        
        for (Iterator<Paciente> iterator = vector.iterator(); iterator.hasNext();) {
            
            paciente = iterator.next();
            frm_pacientes.tf_codigo.setText(paciente.getID_Paciente()+"");
            frm_pacientes.tf_nome.setText(paciente.getNome()+"");
            frm_pacientes.cb_dentista.setSelectedItem(paciente.getNomeDentista());
            frm_pacientes.tf_rg.setText(paciente.getRg()+"");
            frm_pacientes.tf_cpf.setText(paciente.getCpf()+"");
            frm_pacientes.tf_email.setText(paciente.getEmail()+"");
            frm_pacientes.tf_telefone.setText(paciente.getTelefone()+"");
            frm_pacientes.tf_celular.setText(paciente.getCelular()+"");
            frm_pacientes.tf_endereco.setText(paciente.getEndereco()+"");
            frm_pacientes.tf_numero.setText(paciente.getNumero()+"");
            frm_pacientes.tf_apto.setText(paciente.getApto()+"");
            frm_pacientes.cb_uf.setSelectedItem(paciente.getUf());
            frm_pacientes.tf_cidade.setText(paciente.getCidade()+"");
            frm_pacientes.tf_bairro.setText(paciente.getBairro()+"");
        }
    }
    /*
     * Método que recebe os parametros de uma clinica a serem alterados
     * e atribui ao objeto clinica para ser acessado pela ClinicaDAO.
     */
    public boolean alterarPaciente(int id_paciente,int id_dentista,String nome,String rg,String cpf,String email,String telefone, String celular,String endereco
                    ,String numero, String apto, String uf, String cidade,String bairro){
        
        Paciente paciente = new Paciente();
        paciente.setID_Paciente(id_paciente);
        paciente.setID_Dentista(id_dentista);
        paciente.setNome(nome);
        paciente.setApto(apto);
        paciente.setBairro(bairro);
        paciente.setCelular(celular);
        paciente.setCidade(cidade);
        paciente.setRg(rg);
        paciente.setEmail(email);
        paciente.setEndereco(endereco);
        paciente.setNumero(numero);
        paciente.setCpf(cpf);
        paciente.setTelefone(telefone);
        paciente.setUf(uf);
        
        PacienteDAO pacienteDAO = new PacienteDAO();
        return pacienteDAO.alterarPaciente(paciente);
        
    }
    
    /*
     * Método para listar em um combobox clinicas
     * que estao cadastradas no banco de dados.
     */
    public void listarPacientesCombo(){
        PacienteDAO pacienteDAO = new PacienteDAO();
        pacienteDAO.listarPacientesCombo();
    }
    
    //</editor-fold>
}
